/**
 * Nombre : ConsultaIndividualAction.java 
 * Versi�n : 1.1 
 * Creaci�n : 12/11/2008 
 * Autor : Orlando Pihue Montoya 
 * Usuario : P020912 
 * Finalidad : Consulta de Perfiles de Usuario
 * 
 * Modificacion: << fecha de modificaci�n>> 
 * Autor : <<quien actualizo el archivo>> 
 * Usuario : <<c�digo de usuario modificador>> 
 * Detalle : <<descripci�n de la modificaci�n>>
 */

package igrupobbva.pe.sistemareniec.actions;

import igrupobbva.pe.sistemareniec.forms.UsuarioForm;
import igrupobbva.pe.sistemareniec.util.FuncionesUtil;
import igrupobbva.pe.sistemareniec.util.LectorParametrosEntrada;
import igrupobbva.pe.sistemareniec.util.ParametroUtil;
import igrupobbva.pe.sistemareniec.util.ReniecLog;

import java.awt.Color;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Vector;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

//import proxy.load.Connection;

import com.grupobbva.bc.per.tele.ldap.serializable.IILDPeUsuario;
import com.grupobbva.iici.serializable.Corporativa;
import com.grupobbva.iici.serializable.ParametrosEntrada;
import com.grupobbva.iici.service.CorporativaService;
import com.grupobbva.iici.service.OficinaService;
import com.grupobbva.iici.util.ConstantesUtil;
import com.grupobbva.iici.util.SpringUtils;
import com.grupobbva.pe.SIR.ents.body.consultaPorNombres.DatosPersona;
import com.grupobbva.pe.SIR.ents.header.RequestHeader;
import com.grupobbva.pe.SIR.service.message.ConsultaPorDNIRequest;
import com.grupobbva.pe.SIR.service.message.ConsultaPorDNIResponse;
import com.grupobbva.pe.SIR.service.message.ConsultaPorNombresRequest;
import com.grupobbva.pe.SIR.service.message.ConsultaPorNombresResponse;
import com.grupobbva.pe.SIR.service.message.WS_PersonaReniec_ServiceLocator;
import com.ibm.www.operations.SubTramaCoincidencia1;
import com.ibm.www.operations.SubTramaRespuestaDatos2;
import com.lowagie.text.BadElementException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;

public class ConsultaIndividualAction extends DispatchAction {
	static Logger logger = Logger.getLogger(ConsultaIndividualAction.class
			.getName());

	private List listaUsuarios;
	
	private CorporativaService corporativaService;
	
	private OficinaService oficinaService;

	ReniecLog objLog = new ReniecLog();

	//IILDPeUsuario user = null;

	public ActionForward Test(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		
		ActionForward forward = new ActionForward();
		corporativaService 	= SpringUtils.getBean(request, CorporativaService.class);
		String strResult = getEstado("1", true,corporativaService.getEstado());
		System.out.println("strREsult = " + strResult);

		return forward;
	}

	public ActionForward consultaxApellidosNombres(ActionMapping mapping,
			ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {

		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward();
		UsuarioForm usuarioForm = (UsuarioForm) form;
		HttpSession sesion = request.getSession();

		String cod_oficina = (String) request.getParameter("cod_oficina");
		String nom_oficina = (String) request.getParameter("nom_oficina");
		String rootMasiva = (String) sesion.getAttribute("txt");
		String rootLog = (String) sesion.getAttribute("log");
		String codOficina = (String) sesion.getAttribute("codOficina");

		String registro = (String) sesion.getAttribute("registro");
		String desOficina = (String) sesion.getAttribute("desOficina");
		String nomCompleto = (String) request.getSession().getAttribute(
				"nombre");
		String apePaterno = (String) request.getParameter("apePaterno");
		String apeMaterno = (String) request.getParameter("apeMaterno");
		String nombres = (String) request.getParameter("nombres");

		if (cod_oficina == null || cod_oficina.equals("")) {
			request.getSession().setAttribute("temp", "0");
		} else {
			request.getSession().setAttribute("temp", "1");
			request.getSession().setAttribute("temp_cod", cod_oficina);
			request.getSession().setAttribute("temp_nom", nom_oficina);
		}
		
		ParametrosEntrada input = LectorParametrosEntrada.parametrosConsultaxNombre(request);

		//TODO [MGLHPM]
		ParametroUtil parametroUtil = ParametroUtil.getInstance();
		
		RequestHeader cabecera2 = (RequestHeader) sesion.getAttribute("cabecera2");
		
		//Calendar fechaActual = GregorianCalendar.getInstance();
		Date fechaActual = new Date();
		//AAAA-MM-DD-HH.mm.SS.ssssss
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSSSSS");
		DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd-HHmmssSSSSSS");
		
		WS_PersonaReniec_ServiceLocator proxy = new  WS_PersonaReniec_ServiceLocator();
		proxy.setWS_PersonaReniecEndpointAddress(parametroUtil.getValue("ws.url.reniec"));
		
		try
		{
			cabecera2.setCodigoInterfaz(parametroUtil.getValue("codigoInterfazNombres"));
			cabecera2.setFechaHoraEnvio(df.format(fechaActual));
			cabecera2.setIdTransaccion(df2.format(fechaActual)+cabecera2.getUsuario().trim());//FIXME Solo por Pruebas
			
			logger.info("MGLHPM INICIO consultaxApellidosNombres");
			
			logger.info("MGLHPM Cabecera" + ToStringBuilder.reflectionToString(cabecera2, ToStringStyle.MULTI_LINE_STYLE));
			
			com.grupobbva.pe.SIR.ents.body.consultaPorNombres.ConsultaPorNombresRequest body = new com.grupobbva.pe.SIR.ents.body.consultaPorNombres.ConsultaPorNombresRequest();
			body.setTipoAplicacion(parametroUtil.getValue("tipoAplicacion"));
			body.setRegistroCodUsuario(cabecera2.getUsuario().trim());
			body.setNumeroCoincidenciasSolicitadas(parametroUtil.getValue("numCoincidenciasSolicitadas"));
			body.setInicioGrupo(ConstantesUtil.inciGrupo(0));
			body.setApellidoMaterno(apeMaterno);
			body.setApellidoPaterno(apePaterno);
			body.setPreNombres(nombres);
			
			logger.info("MGLHPM Cuerpo" + ToStringBuilder.reflectionToString(body, ToStringStyle.MULTI_LINE_STYLE));
			
			ConsultaPorNombresResponse rpta;
			
			ConsultaPorNombresRequest consulta = new ConsultaPorNombresRequest(cabecera2, body);
			
			rpta = proxy.getWS_PersonaReniec().consultaPorNombres(consulta);
			
			logger.info("MGLHPM RPTA RPTA " + ToStringBuilder.reflectionToString(rpta, ToStringStyle.MULTI_LINE_STYLE));
			
			imprimirRpta("0", rpta);			
			
			usuarioForm.setCodError(Messages.getString(rpta.getRefResponseHeader().getCodigoRespuesta()));
			
			List<SubTramaCoincidencia1> obj = new ArrayList<SubTramaCoincidencia1>();
			
			if("0000".equals(rpta.getRefResponseHeader().getCodigoRespuesta()))
			{
				String total = rpta.getRefConsultaPorNombresResponse().getNumTotalCoindicencias();
				DatosPersona[] datosPersonas = rpta.getRefConsultaPorNombresResponse().getListaDatosPersona();
				
				int grupo = Integer.valueOf(StringUtils.isNotEmpty(total) && StringUtils.isNumeric(total) ? total : "0" );
				
				
				objLog
				.writeLog(
						"["
								+ registro
								+ "] ["
								+ codOficina
								+ "] = Tipo Consulta (NOMBRE) ==============================================",
						rootLog);
				objLog.writeLog("[N� de DNI's Respondidos] : " + ConstantesUtil.completarCaracteres(grupo), rootLog);
				
				SubTramaCoincidencia1 coincidencia1 = recolectarParametros(obj, datosPersonas);				
				
				//int residuo = 0;
				if (grupo > 30) {
					grupo = grupo / 30;
					if (grupo % 30 > 0)
						grupo = grupo + 1;
					for (int j = 1; j < grupo; j++) {
						body.setInicioGrupo(ConstantesUtil.inciGrupo(j));						
						consulta = new ConsultaPorNombresRequest(cabecera2, body);						
						rpta = proxy.getWS_PersonaReniec().consultaPorNombres(consulta);
						
						imprimirRpta(j+"",rpta);	
						
						datosPersonas = rpta.getRefConsultaPorNombresResponse().getListaDatosPersona();
						
						coincidencia1 = recolectarParametros(obj, datosPersonas);
					}
				}
				
				logger.info("MGLHPM FIN  consultaxApellidosNombres");

				request.getSession().setAttribute("listaCoincidencia", obj);
				usuarioForm.setSubTramaCoincidencia1(coincidencia1);

				request.getSession().setAttribute("collecUsuario", new ArrayList());
				
				forward = mapping.findForward("buscar");
				
			}
			else
			{
				usuarioForm.setCodError(rpta.getRefResponseHeader().getCodigoRespuesta());
				logger.error(rpta.getRefResponseHeader().getIdTransaccion()+" - "+rpta.getRefResponseHeader().getCodigoRespuesta()+" - "+rpta.getRefResponseHeader().getMensajeRespuesta());
			}			
			
		}
		catch(Exception e){
			logger.error("ERROR-Individual: ",e);
		}
		finally
		{
			cabecera2.setCodigoInterfaz(null);
			cabecera2.setFechaHoraEnvio(null);
			cabecera2.setIdTransaccion(null);
		}
		
		//Cabecera cabecera = (Cabecera) sesion.getAttribute("cabecera");

		//Vector listMenu = null;
		//ArrayList collecUsuario = new ArrayList();
		//SubTramaRespuesta1 subTramaRespuesta1 = new SubTramaRespuesta1();
		//try {

			//SubTramaConsulta1 subTramaConsulta1 = new SubTramaConsulta1();
			
			//SubTramaCoincidencia1 coincidencia1 = new SubTramaCoincidencia1();
			//SubTramaCoincidencia1[] coincidencia = new SubTramaCoincidencia1[30];

			//subTramaConsulta1.setNumCoincidenciasSol(30);
			//subTramaConsulta1.setInicioGrupo(Integer.parseInt("0000"));
			//subTramaConsulta1.setApellidoPat(apePaterno + " ");
			//subTramaConsulta1.setApellidoMat(apeMaterno + " ");
			//subTramaConsulta1.setPrenombres(nombres + " ");
			//subTramaConsulta1.setReservado("     ");

			//cabecera.setTipoConsulta("1");
			//RENIEC_1_REQUEST_Type objSend = new RENIEC_1_REQUEST_Type();
			
			//Control control = new Control();
			//control.setCodigoOficina(input.getCodOficina());
			//control.setNombreOficina(input.getNomOficina());
			//control.setRegistro(input.getRegistro());
			//control.setNombreCompleto(input.getNomGestor());
			//control.setFechaConsulta(input.getFechaString());
			//control.setTipoConsulta(input.getTipoConsulta());
			//control.setCanal(input.getCanal());
			//objSend.setControl(control);
			
			//objSend.setCabecera(cabecera);
			//objSend.setSubTramaConsulta(subTramaConsulta1);
			
			//BBVA_RENIEC_INTERFACE_ServiceLocator objLocator = new BBVA_RENIEC_INTERFACE_ServiceLocator();

			//RENIEC_1_REPLY_Type objd = new RENIEC_1_REPLY_Type(cabecera, subTramaRespuesta1, coincidencia);

			//ArrayList obj = new ArrayList();

			//objd = objLocator.getSOAP_HTTP_Port().operation1(objSend);
			//subTramaRespuesta1 = objd.getSubTramaRespuesta();
			//coincidencia = objd.getSubTramaCoincidencia();
			//usuarioForm.setCodError(Messages.getString(subTramaRespuesta1
			//		.getCodError()));
			//System.out.println("ERROR:: " + subTramaRespuesta1.getCodError());
			//System.out.println("ERROR:: " + usuarioForm.getCodError());
			//System.out.println("N� COINCIDENCIAS:: " + subTramaRespuesta1.getNumTotalCoincidencias());
			
			
			
			//System.out.println("Conicidencias:  " + coincidencia);

			/*for (int i = 0; i < coincidencia.length; i++) {
				coincidencia1 = objd.getSubTramaCoincidencia(i);
				obj.add(coincidencia1);
			}*/

//			int residuo = 0;
//			if (grupo > 30) {
//				grupo = grupo / 30;
//				if (grupo % 30 > 0)
//					grupo = grupo + 1;
//				for (int j = 1; j < grupo; j++) {
//					subTramaConsulta1.setInicioGrupo(Integer
//							.parseInt(ConstantesUtil.inciGrupo(j)));
//					objSend.setSubTramaConsulta(subTramaConsulta1);
//					objd = objLocator.getSOAP_HTTP_Port().operation1(objSend);
//					subTramaRespuesta1 = objd.getSubTramaRespuesta();
//					coincidencia = objd.getSubTramaCoincidencia();
//
//					for (int i = 0; i < coincidencia.length; i++) {
//						coincidencia1 = objd.getSubTramaCoincidencia(i);
//						obj.add(coincidencia1);
//					}
//				}
//			}
//
//			request.getSession().setAttribute("listaCoincidencia", obj);
//			usuarioForm.setSubTramaCoincidencia1(coincidencia1);
//
//			request.getSession().setAttribute("collecUsuario", collecUsuario);
//
//		} catch (Exception e) {
//			usuarioForm.setCodError(Messages.getString(subTramaRespuesta1
//					.getCodError()));
//			errors.add("name", new ActionError("id")); //$NON-NLS-2$
//			e.printStackTrace();
//		}
//		if (!errors.isEmpty()) {
//			saveErrors(request, errors);
//			forward = mapping.findForward("error");
//		} else {
//			forward = mapping.findForward("buscar");
//		}
		// Finish with
		return (forward);

	}

	private void imprimirRpta(String msj, ConsultaPorNombresResponse rpta) {
		if(rpta != null)
		{
			if(rpta.getRefResponseHeader() != null)
					logger.info("MGLHPM RPTA " + msj + " Cabecera " + ToStringBuilder.reflectionToString(rpta.getRefResponseHeader(), ToStringStyle.MULTI_LINE_STYLE));
			if(rpta.getRefConsultaPorNombresResponse() != null)
			{
				logger.info("MGLHPM " + msj + " RPTA Resultados " + ToStringBuilder.reflectionToString(rpta.getRefConsultaPorNombresResponse(), ToStringStyle.MULTI_LINE_STYLE));
				if(rpta.getRefConsultaPorNombresResponse().getListaDatosPersona() != null)
				{
					int contador = 1;
					for (DatosPersona persona : rpta.getRefConsultaPorNombresResponse().getListaDatosPersona()) {
						logger.info("MGLHPM " + msj + " Persona " + contador + " " + ToStringBuilder.reflectionToString(persona, ToStringStyle.MULTI_LINE_STYLE));
						contador++;
					}
				}
				
				
			}						
		}
	}

	private SubTramaCoincidencia1 recolectarParametros(List<SubTramaCoincidencia1> obj,
			DatosPersona[] datosPersonas) {
		SubTramaCoincidencia1 coincidencia1 = new SubTramaCoincidencia1();
		for (DatosPersona datosPersona : datosPersonas) {
			coincidencia1 = new SubTramaCoincidencia1();
			coincidencia1.setNumDNI(datosPersona.getNumeroDNIConsultado());
			coincidencia1.setCaracVerificacion(datosPersona.getCaracterVerificacion());
			coincidencia1.setTipoDocumento("");//FIXME No trae Tipo de Documento
			coincidencia1.setApellidoPat(datosPersona.getApellidoPaterno());
			coincidencia1.setApellidoMat(datosPersona.getApellidoMaterno());
			coincidencia1.setPrenombres(datosPersona.getPreNombres());
			coincidencia1.setRestricciones("");//FIXME No trae Tipo de Documento
			coincidencia1.setImagen(datosPersona.getIndImagen());
			coincidencia1.setReservado("");//FIXME No trae Tipo de Documento
			obj.add(coincidencia1);
		}
		return coincidencia1;
	}

	public ActionForward consultaxDni(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		//TODO consultaxDni
		UsuarioForm usuarioForm = (UsuarioForm) form;

		corporativaService 	= SpringUtils.getBean(request, CorporativaService.class);

		String nombreOficina = "";

		request.getSession().removeAttribute("tramaRta");
		String foCkeck = (String) request.getParameter("fo");
		String fiCkeck = (String) request.getParameter("fi");

		HttpSession sesion = request.getSession();
		
		ParametrosEntrada input = LectorParametrosEntrada.parametrosConsultaxDNI(request);
		
		String rootMasiva = (String) sesion.getAttribute("txt");
		String rootLog = (String) sesion.getAttribute("log");
		int flagCentro = 0;
		
		//TODO [MGLHPM]
		ParametroUtil parametroUtil = ParametroUtil.getInstance();
		
		RequestHeader cabecera2 = (RequestHeader) sesion.getAttribute("cabecera2");
		
		//Calendar fechaActual = GregorianCalendar.getInstance();
		Date fechaActual = new Date();
		//AAAA-MM-DD-HH.mm.SS.ssssss
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSSSSS");
		
		WS_PersonaReniec_ServiceLocator proxy = new  WS_PersonaReniec_ServiceLocator();
		proxy.setWS_PersonaReniecEndpointAddress(parametroUtil.getValue("ws.url.reniec"));
		
		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward(); // return value

		ArrayList listaTitulo = new ArrayList();
		
		SubTramaRespuestaDatos2 subTramaRespuesta = new SubTramaRespuestaDatos2();
		
		boolean flag = false;
		
		try
		{
			cabecera2.setCodigoInterfaz(parametroUtil.getValue("codigoInterfazDNI"));
			cabecera2.setFechaHoraEnvio(df.format(fechaActual));
			cabecera2.setIdTransaccion(cabecera2.getFechaHoraEnvio()+cabecera2.getCodigoAplicacion()+cabecera2.getUsuario().trim());
			
			logger.info("== MGLHPM INICIO consultaxDni v3 ==");
			//System.out.println("MGLHPM INICIO consultaxDni");
			
			logger.info("MGLHPM Cabecera " + ToStringBuilder.reflectionToString(cabecera2, ToStringStyle.MULTI_LINE_STYLE));
			//System.out.println("MGLHPM Cabecera" + ToStringBuilder.reflectionToString(cabecera2, ToStringStyle.MULTI_LINE_STYLE));
			
			com.grupobbva.pe.SIR.ents.body.consultaPorDNI.ConsultaPorDNIRequest body = new com.grupobbva.pe.SIR.ents.body.consultaPorDNI.ConsultaPorDNIRequest();
			//body.setCentroCostos("Centro Costo");
			//body.setHostSolicitante("Host");
			body.setTipoAplicacion(parametroUtil.getValue("tipoAplicacion"));
			//body.setNumeroDNISolicitante("58745697");
			body.setRegistroCodUsuario(cabecera2.getUsuario().trim());
			body.setNumeroDNIConsultado(input.getDni());
			body.setIndConsultaDatos("S");
			body.setIndConsultaFirma("S");
			body.setIndConsultaFoto("S");
			body.setFormatoFirma(parametroUtil.getValue("formatoFirma"));
			
			logger.info("MGLHPM Cuerpo " + ToStringBuilder.reflectionToString(body, ToStringStyle.MULTI_LINE_STYLE));
			//System.out.println("MGLHPM Cuerpo" + ToStringBuilder.reflectionToString(body, ToStringStyle.MULTI_LINE_STYLE));
			
			ConsultaPorDNIRequest consulta = new ConsultaPorDNIRequest(cabecera2, body);
			
			ConsultaPorDNIResponse rpta = null;
			rpta = proxy.getWS_PersonaReniec().consultaPorDNI(consulta);
			
			logger.info("MGLHPM RPTA " + ToStringBuilder.reflectionToString(rpta, ToStringStyle.MULTI_LINE_STYLE));
			if(rpta != null)
			{
				if(rpta.getRefResponseHeader().getCodigoRespuesta()!=null){
					logger.info("[Individual]-CodRpta-WS: "+rpta.getRefResponseHeader().getCodigoRespuesta());
					logger.info("[Individual]-MensajeRpta-WS: "+rpta.getRefResponseHeader().getMensajeRespuesta());
				}
				
				logger.info("MGLHPM RPTA Cabecera " + ToStringBuilder.reflectionToString(rpta.getRefResponseHeader(), ToStringStyle.MULTI_LINE_STYLE));
				logger.info("MGLHPM RPTA Cuerpo " + ToStringBuilder.reflectionToString(rpta.getRefConsultaPorDNIResponse(), ToStringStyle.MULTI_LINE_STYLE));
				
				if(rpta.getRefConsultaPorDNIResponse().getRespuestaDNI() != null)
					logger.info("MGLHPM RPTA Cuerpo DNI " + ToStringBuilder.reflectionToString(rpta.getRefConsultaPorDNIResponse().getRespuestaDNI(), ToStringStyle.MULTI_LINE_STYLE));
				
				if(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos() != null)
				{
					logger.info("MGLHPM RPTA Cuerpo Datos " + ToStringBuilder.reflectionToString(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos(), ToStringStyle.MULTI_LINE_STYLE));
					if(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI() != null)
						logger.info("MGLHPM RPTA Cuerpo Datos " + ToStringBuilder.reflectionToString(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI(), ToStringStyle.MULTI_LINE_STYLE));
					if(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona() != null)
						logger.info("MGLHPM RPTA Cuerpo Datos " + ToStringBuilder.reflectionToString(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona(), ToStringStyle.MULTI_LINE_STYLE));
					if(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio()!= null)
						logger.info("MGLHPM RPTA Cuerpo Datos " + ToStringBuilder.reflectionToString(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio(), ToStringStyle.MULTI_LINE_STYLE));
					if(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento()!= null)
						logger.info("MGLHPM RPTA Cuerpo Datos " + ToStringBuilder.reflectionToString(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento(), ToStringStyle.MULTI_LINE_STYLE));
				}
					
				
				if(rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes() != null)
				{
					logger.info("Tiene Imagen");
					//logger.info("MGLHPM RPTA Cuerpo Imagenes " + ToStringBuilder.reflectionToString(rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes(), ToStringStyle.MULTI_LINE_STYLE));
					
				}
			}
			//System.out.println("MGLHPM Cuerpo" + ToStringBuilder.reflectionToString(body, ToStringStyle.MULTI_LINE_STYLE));
			
			logger.info("MGLHPM FIN  consultaxDni");
			
			if("0000".equals(rpta.getRefResponseHeader().getCodigoRespuesta()))
			{
				/*rpta.getRefConsultaPorDNIResponse().getRespuestaDNI().getNumDNIConsultado();				
				
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getCodigoRestriccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getConstanciaVotacion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getDescripcionRestriccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getFechaExpedicion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getFechaInscripcion();
				
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNombres();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getApellidoPaterno();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getApellidoMaterno();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getApellidoCasada();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getSexo();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getDescripcionSexo();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getEstatura();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getCodGradoInstruccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getDescripcionGradoInstruccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getCodigoEstadoCivil();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getDescripcionEstadoCivil();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getCodTipoDocSustentario();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getDescripcionTipoDocSustentario();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getDigitoVerificacion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNombrePadre();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNombreMadre();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNumeroDNIConsultado();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNumeroDocSustentario();
				
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getCodUbigeoDepartamento();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getCodUbigeoProvincia();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getCodUbigeoDistrito();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDepartamento();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getProvincia();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDistrito();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getCodigoPrefijoDireccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDescripcionPrefijoDireccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDireccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getNumDireccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getBlockChalet();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getInterior();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getUrbanizacion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getEtapa();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getManzana();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getLote();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getCodigoPrefijoBlockChalet();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDescripcionPrefijoBlockChalet();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getCodigoPrefijoDptoPisoInterior();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDescripcionPrefijoDptoPisoInterior();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getPrefijoUrbCondResid();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDescripcionPrefijoUrbCondResid();
				
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getCodUbigeoDepartamento();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getCodUbigeoProvincia();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getCodUbigeoDistrito();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getDepartamento();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getProvincia();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getDistrito();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getFecha();
				
				rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes().getFirma();
				rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes().getLongitudFirma();
				rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes().getFoto();
				rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes().getLongitudFoto();*/
				
				//----------------------------------------------------------------------------------------------------------------------
				flag = true;
				objLog.writeLog("[Dni Consultado] : "
						+ rpta.getRefConsultaPorDNIResponse().getRespuestaDNI().getNumDNIConsultado(), rootLog);
				
				subTramaRespuesta = FuncionesUtil.transformarRespuestaReniec(rpta,corporativaService.getEstado());
				/*subTramaRespuesta.setSexo(ConstantesUtil.sexo(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getSexo()));
				
				subTramaRespuesta.setFechaExpedicion(ConstantesUtil.intToString(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getFechaExpedicion()));
				subTramaRespuesta.setFechaInscripcion(ConstantesUtil.intToString(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getFechaInscripcion()));
				
				subTramaRespuesta.setFechaNac(ConstantesUtil.intToString(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getFecha()));
				
				subTramaRespuesta.setEstatura(ConstantesUtil.estatura(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getEstatura()));
				subTramaRespuesta.setEstadoCivil(ConstantesUtil.estadoCivil(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getCodigoEstadoCivil()));
								
				subTramaRespuesta.setGradoInstruccion(ConstantesUtil.gradoInst(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getCodGradoInstruccion()));
				
				subTramaRespuesta.setRestricciones(getEstado(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getCodigoRestriccion(), true));
				
				subTramaRespuesta.setConstVotacion(ConstantesUtil.votacion(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getConstanciaVotacion()));
				
				subTramaRespuesta.setNumDNI(rpta.getRefConsultaPorDNIResponse().getRespuestaDNI().getNumDNIConsultado());
				subTramaRespuesta.setApellidoPat(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getApellidoPaterno());
				subTramaRespuesta.setApellidoMat(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getApellidoMaterno());
				subTramaRespuesta.setNombres(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNombres());
				
				subTramaRespuesta.setDptoNac(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getDepartamento());
				
				subTramaRespuesta.setNombrePadre(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNombrePadre());
				subTramaRespuesta.setNombreMadre(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNombreMadre());
				
				subTramaRespuesta.setRestricciones(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getDescripcionRestriccion());

				subTramaRespuesta.setConstVotacion(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getConstanciaVotacion());
				
				//subTramaRespuesta.setAnioEstudio(ConstantesUtil.anioEstudios(subTramaRespuesta.getAnioEstudio()));//FIXME [MGLHPM] Este dato no se esta obteniendo en la nueva consulta.

				//FIXME Por confirmar N. Libro
				//FIXME A�o de estudio
				subTramaRespuesta.setDocSust(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNumeroDocSustentario());
				
				subTramaRespuesta.setProvNac(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getProvincia());
				subTramaRespuesta.setDistNac(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getDistrito());
				//subTramaRespuesta.setLocalNac("");//FIXME falta este dato
				
				subTramaRespuesta.setDepartamentoDom(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDepartamento());
				subTramaRespuesta.setProvinciaDom(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getProvincia());
				subTramaRespuesta.setDistritoDom(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDistrito());
				//subTramaRespuesta.setLocalidadDom(""); //FIXME falta este dato
				subTramaRespuesta.setDireccion(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDireccion());*/
				
				for (int i = 0; i < 32; i++) {
					listaTitulo.add(Messages.getString("opihue." + i));
				}
				
				sesion.setAttribute("foto", Base64.decodeBase64(rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes().getFoto()));
				sesion.setAttribute("firma", Base64.decodeBase64(rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes().getFirma()));

				usuarioForm.setSubTramaRespuesta(subTramaRespuesta);

				request.getSession().setAttribute("tramaRta", subTramaRespuesta);
				
				//FIXME [MGLHPM] el dato caducidad no se esta obteniendo en la nueva consulta.				
				/*if (subTramaRespuesta.getCaducidad().equals("C")) {
					Connection con = new Connection();
					sesion.setAttribute("caducidad", con.findByID(
							ConstantesUtil.CADUCIDAD).getValor1());
					
				} else {
					sesion.setAttribute("caducidad", "");
				}*/
				
			}
			else
			{
				saveErrors(request, errors);
			}
			
		}
		finally
		{
			cabecera2.setCodigoInterfaz(null);
			cabecera2.setFechaHoraEnvio(null);
			cabecera2.setIdTransaccion(null);
		}

		/*Cabecera cabecera = (Cabecera) sesion.getAttribute("cabecera");
		cabecera.setTipoConsulta("2");
		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward(); // return value

		ArrayList listaTitulo = new ArrayList();
		boolean flag = false;
		try {

			SubTramaConsulta2 subTramaConsulta = new SubTramaConsulta2();
			SubTramaRespuestaDatos2 subTramaRespuesta = new SubTramaRespuestaDatos2();
			SubTramaRespuestaImagenes2 subTramaRespuestaImagenes2 = new SubTramaRespuestaImagenes2();

			RENIEC_2_REPLY_Type objd = new RENIEC_2_REPLY_Type(cabecera,
					subTramaRespuesta, subTramaRespuestaImagenes2);
			objLog
					.writeLog(
							"["		+ input.getRegistro() + "] [" + input.getCodOficina() + "] = Tipo Consulta (DNI) =================================================", rootLog); //$NON-NLS-2$ //$NON-NLS-3$

			subTramaConsulta.setNumDNI(input.getDni());
			subTramaConsulta.setCaracVerificacion(" ");
			subTramaConsulta.setTipoDocumento(" ");
			subTramaConsulta.setFormatoFirma("1");
			subTramaConsulta.setReservado("                             ");
			usuarioForm.setCodError("Error No se encontraron Registros");
			RENIEC_2_REQUEST_Type objSend = new RENIEC_2_REQUEST_Type();
			
			Control control = new Control();
			control.setCodigoOficina(input.getCodOficina());
			control.setNombreOficina(input.getNomOficina());
			control.setRegistro(input.getRegistro());
			control.setNombreCompleto(input.getNomGestor());
			control.setFechaConsulta(input.getFechaString());
			control.setTipoConsulta(input.getTipoConsulta());
			control.setCanal(input.getCanal());
			objSend.setControl(control);
			
			objSend.setCabecera(cabecera);
			objSend.setSubTramaConsulta(subTramaConsulta);
			//BBVA_RENIEC_WSDLSOAP_HTTP_ServiceLocator objLocator = new BBVA_RENIEC_WSDLSOAP_HTTP_ServiceLocator();
			BBVA_RENIEC_INTERFACE_ServiceLocator objLocator = new BBVA_RENIEC_INTERFACE_ServiceLocator();

			objd = objLocator.getSOAP_HTTP_Port().operation2(objSend);
			subTramaRespuesta = objd.getSubTramaRespuestaDatos();
			subTramaRespuestaImagenes2 = objd.getSubTramaRespuestaImagenes();

			usuarioForm.setCodError(Messages.getString(subTramaRespuesta
					.getCodError()));
			System.out.println("ERROR:: " + subTramaRespuesta.getCodError());
			sesion.setAttribute("foto", subTramaRespuestaImagenes2.getFoto());
			sesion.setAttribute("firma", subTramaRespuestaImagenes2.getFirma());

			sesion.setAttribute("fiCkeck", fiCkeck);
			sesion.setAttribute("foCkeck", foCkeck);

			if (subTramaRespuesta.getCodError().equals("0000")) {
				flag = true;
				objLog.writeLog("[Dni Consultado] : "
						+ subTramaRespuesta.getNumDNI(), rootLog);
				subTramaRespuesta.setSexo(ConstantesUtil.sexo(subTramaRespuesta
						.getSexo()));
				subTramaRespuesta.setFechaExpedicion(ConstantesUtil
						.intToString(subTramaRespuesta.getFechaExpedicion()));
				subTramaRespuesta.setFechaInscripcion(ConstantesUtil
						.intToString(subTramaRespuesta.getFechaInscripcion()));
				subTramaRespuesta.setFechaNac(ConstantesUtil
						.intToString(subTramaRespuesta.getFechaNac()));
				subTramaRespuesta.setEstatura(ConstantesUtil
						.estatura(subTramaRespuesta.getEstatura()));
				subTramaRespuesta.setEstadoCivil(ConstantesUtil
						.estadoCivil(subTramaRespuesta.getEstadoCivil()));
				subTramaRespuesta.setGradoInstruccion(ConstantesUtil
						.gradoInst(subTramaRespuesta.getGradoInstruccion()));
				System.out.println("subTramaRespuesta.getRestricciones():: "
						+ subTramaRespuesta.getRestricciones());
				//cambio Uno
				//subTramaRespuesta.setRestricciones(ConstantesUtil.estado(subTramaRespuesta.getRestricciones(),true));
				subTramaRespuesta.setRestricciones(getEstado(subTramaRespuesta
						.getRestricciones(), true));
				subTramaRespuesta.setConstVotacion(ConstantesUtil
						.votacion(subTramaRespuesta.getConstVotacion()));
				subTramaRespuesta.setAnioEstudio(ConstantesUtil
						.anioEstudios(subTramaRespuesta.getAnioEstudio()));

				System.out.println("CADUCIDAD:: "
						+ subTramaRespuesta.getCaducidad());
				//SesionLdapPeruProxy obj = new SesionLdapPeruProxy();
				//IILDPeUsuario objUsu = new IILDPeUsuario();
				for (int i = 0; i < 32; i++) {
					listaTitulo.add(Messages.getString("opihue." + i));
				}

				usuarioForm.setSubTramaRespuesta(subTramaRespuesta);
				java.sql.Blob blob = null;
				request.getSession()
						.setAttribute("tramaRta", subTramaRespuesta);
				String caducidad = subTramaRespuesta.getCaducidad();
				System.out.println("CADUCIDAD LLLLL:: "
						+ subTramaRespuesta.getCaducidad().length());
				if (subTramaRespuesta.getCaducidad().equals("C")) {
					Connection con = new Connection();
					sesion.setAttribute("caducidad", con.findByID(
							ConstantesUtil.CADUCIDAD).getValor1());
					System.out.println("quiero ver que traes :"
							+ con.findByID(ConstantesUtil.CADUCIDAD)
									.getValor1());
				} else {
					sesion.setAttribute("caducidad", "");
				}

			}
		} catch (Exception e) {
			e.printStackTrace();
			errors.add("name", new ActionError("id")); //$NON-NLS-2$
		}*/
		if (!errors.isEmpty()) {
			saveErrors(request, errors);
			forward = mapping.findForward("error");
		} else {
			if (flag == true)
				forward = mapping.findForward("detalle");
			else
				forward = mapping.findForward("error");
		}
		return (forward);

	}

	public ActionForward consultaxDnixNombre(ActionMapping mapping,
			ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		//TODO consultaxDnixNombre
		UsuarioForm usuarioForm = (UsuarioForm) form;
		HttpSession sesion = request.getSession();
		request.getSession().removeAttribute("tramaRta");
		
		ParametrosEntrada input = LectorParametrosEntrada.parametrosConsultaxNombre(request);
		
		String foCkeck = (String) request.getParameter("fo");
		String fiCkeck = (String) request.getParameter("fi");
		String rootMasiva = (String) sesion.getAttribute("txt");
		String rootLog = (String) sesion.getAttribute("log");
		String codOficina = (String) sesion.getAttribute("codOficina");

		int flagCentro = 0;
		
		ParametroUtil parametroUtil = ParametroUtil.getInstance();
		
		RequestHeader cabecera2 = (RequestHeader) sesion.getAttribute("cabecera2");
		
		//Calendar fechaActual = GregorianCalendar.getInstance();
		Date fechaActual = new Date();
		//AAAA-MM-DD-HH.mm.SS.ssssss
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSSSSS");
		
		WS_PersonaReniec_ServiceLocator proxy = new  WS_PersonaReniec_ServiceLocator();
		proxy.setWS_PersonaReniecEndpointAddress(parametroUtil.getValue("ws.url.reniec"));
		
		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward(); // return value

		ArrayList listaTitulo = new ArrayList();
		
		SubTramaRespuestaDatos2 subTramaRespuesta = new SubTramaRespuestaDatos2();
		
		boolean flag = false;
		
		try
		{
			cabecera2.setCodigoInterfaz(parametroUtil.getValue("codigoInterfazDNI"));
			cabecera2.setFechaHoraEnvio(df.format(fechaActual));
			cabecera2.setIdTransaccion(cabecera2.getFechaHoraEnvio()+cabecera2.getCodigoAplicacion()+cabecera2.getUsuario().trim());
			
			logger.info("MGLHPM INICIO consultaxDnixNombre");
			System.out.println("MGLHPM INICIO consultaxDnixNombre");
			
			logger.info("MGLHPM Cabecera" + ToStringBuilder.reflectionToString(cabecera2, ToStringStyle.MULTI_LINE_STYLE));
			System.out.println("MGLHPM Cabecera" + ToStringBuilder.reflectionToString(cabecera2, ToStringStyle.MULTI_LINE_STYLE));
			
			com.grupobbva.pe.SIR.ents.body.consultaPorDNI.ConsultaPorDNIRequest body = new com.grupobbva.pe.SIR.ents.body.consultaPorDNI.ConsultaPorDNIRequest();
			//body.setCentroCostos("Centro Costo");
			//body.setHostSolicitante("Host");
			body.setTipoAplicacion(parametroUtil.getValue("tipoAplicacion"));
			//body.setNumeroDNISolicitante("58745697");
			body.setRegistroCodUsuario(cabecera2.getUsuario().trim());
			body.setNumeroDNIConsultado(input.getDni());
			body.setIndConsultaDatos("S");
			body.setIndConsultaFirma("S");
			body.setIndConsultaFoto("S");
			body.setFormatoFirma(parametroUtil.getValue("formatoFirma"));
			
			logger.info("MGLHPM Cuerpo" + ToStringBuilder.reflectionToString(body, ToStringStyle.MULTI_LINE_STYLE));
			System.out.println("MGLHPM Cuerpo" + ToStringBuilder.reflectionToString(body, ToStringStyle.MULTI_LINE_STYLE));
			
			logger.info("MGLHPM FIN  consultaxDnixNombre");
			System.out.println("MGLHPM FIN  consultaxDnixNombre");
			
			ConsultaPorDNIRequest consulta = new ConsultaPorDNIRequest(cabecera2, body);
			
			ConsultaPorDNIResponse rpta = null;
			rpta = proxy.getWS_PersonaReniec().consultaPorDNI(consulta);
			
			subTramaRespuesta.setCodError(rpta.getRefResponseHeader().getCodigoRespuesta());
			
			if("0000".equals(rpta.getRefResponseHeader().getCodigoRespuesta()))
			{
				/*rpta.getRefConsultaPorDNIResponse().getRespuestaDNI().getNumDNIConsultado();				
				
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getCodigoRestriccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getConstanciaVotacion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getDescripcionRestriccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getFechaExpedicion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getFechaInscripcion();
				
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNombres();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getApellidoPaterno();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getApellidoMaterno();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getApellidoCasada();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getSexo();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getDescripcionSexo();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getEstatura();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getCodGradoInstruccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getDescripcionGradoInstruccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getCodigoEstadoCivil();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getDescripcionEstadoCivil();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getCodTipoDocSustentario();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getDescripcionTipoDocSustentario();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getDigitoVerificacion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNombrePadre();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNombreMadre();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNumeroDNIConsultado();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getNumeroDocSustentario();
				
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getCodUbigeoDepartamento();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getCodUbigeoProvincia();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getCodUbigeoDistrito();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDepartamento();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getProvincia();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDistrito();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getCodigoPrefijoDireccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDescripcionPrefijoDireccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDireccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getNumDireccion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getBlockChalet();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getInterior();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getUrbanizacion();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getEtapa();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getManzana();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getLote();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getCodigoPrefijoBlockChalet();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDescripcionPrefijoBlockChalet();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getCodigoPrefijoDptoPisoInterior();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDescripcionPrefijoDptoPisoInterior();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getPrefijoUrbCondResid();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDomicilio().getDescripcionPrefijoUrbCondResid();
				
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getCodUbigeoDepartamento();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getCodUbigeoProvincia();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getCodUbigeoDistrito();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getDepartamento();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getProvincia();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getDistrito();
				rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getFecha();
				
				rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes().getFirma();
				rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes().getLongitudFirma();
				rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes().getFoto();
				rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes().getLongitudFoto();*/
				
				//----------------------------------------------------------------------------------------------------------------------
				flag = true;
				objLog.writeLog("[Dni Consultado] : "
						+ rpta.getRefConsultaPorDNIResponse().getRespuestaDNI().getNumDNIConsultado(), rootLog);
				
				subTramaRespuesta = FuncionesUtil.transformarRespuestaReniec(rpta,corporativaService.getEstado());
				
				/*subTramaRespuesta.setSexo(ConstantesUtil.sexo(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getSexo()));
				
				subTramaRespuesta.setFechaExpedicion(ConstantesUtil.intToString(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getFechaExpedicion()));
				subTramaRespuesta.setFechaInscripcion(ConstantesUtil.intToString(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getFechaInscripcion()));
				
				subTramaRespuesta.setFechaNac(ConstantesUtil.intToString(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosNacimiento().getFecha()));
				
				subTramaRespuesta.setEstatura(ConstantesUtil.estatura(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getEstatura()));
				subTramaRespuesta.setEstadoCivil(ConstantesUtil.estadoCivil(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getCodigoEstadoCivil()));
								
				subTramaRespuesta.setGradoInstruccion(ConstantesUtil.gradoInst(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosPersona().getCodGradoInstruccion()));
				
				subTramaRespuesta.setRestricciones(getEstado(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getCodigoRestriccion(), true));
				
				subTramaRespuesta.setConstVotacion(ConstantesUtil.votacion(rpta.getRefConsultaPorDNIResponse().getRespuestaDatos().getDatosDNI().getConstanciaVotacion()));
				*/
				//subTramaRespuesta.setAnioEstudio(ConstantesUtil.anioEstudios(subTramaRespuesta.getAnioEstudio()));//FIXME [MGLHPM] Este dato no se esta obteniendo en la nueva consulta.

				for (int i = 0; i < 32; i++) {
					listaTitulo.add(Messages.getString("opihue." + i));
				}

				usuarioForm.setSubTramaRespuesta(subTramaRespuesta);

				request.getSession().setAttribute("tramaRta", subTramaRespuesta);				

				subTramaRespuesta.setCodError(rpta.getRefResponseHeader().getCodigoRespuesta());
				
				usuarioForm.setCodError(Messages.getString(subTramaRespuesta
						.getCodError()));
				
				sesion.setAttribute("foto", Base64.decodeBase64(rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes().getFoto()));
				sesion.setAttribute("firma", Base64.decodeBase64(rpta.getRefConsultaPorDNIResponse().getRespuestaImagenes().getFirma()));

				sesion.setAttribute("fiCkeck", fiCkeck);
				sesion.setAttribute("foCkeck", foCkeck);
				
				for (int i = 0; i < 32; i++) {
					listaTitulo.add(Messages.getString("opihue." + i));
				}
				
				java.sql.Blob blob = null;
				request.getSession()
						.setAttribute("tramaRta", subTramaRespuesta);
								
				//FIXME [MGLHPM] el dato caducidad no se esta obteniendo en la nueva consulta.				
				/*if (subTramaRespuesta.getCaducidad().equals("C")) {
					Connection con = new Connection();
					sesion.setAttribute("caducidad", con.findByID(
							ConstantesUtil.CADUCIDAD).getValor1());
					
				} else {
					sesion.setAttribute("caducidad", "");
				}*/
				
			}
			else
			{
				saveErrors(request, errors);
			}
			
		}
		finally
		{
			cabecera2.setCodigoInterfaz(null);
			cabecera2.setFechaHoraEnvio(null);
			cabecera2.setIdTransaccion(null);
		}
		
		if (!errors.isEmpty()) {
			saveErrors(request, errors);
			forward = mapping.findForward("error");
		} else {
			if (flag == true)
				forward = mapping.findForward("detalle");
			else
				forward = mapping.findForward("error");
		}

//		Cabecera cabecera = (Cabecera) sesion.getAttribute("cabecera");
//		cabecera.setTipoConsulta("2");
//		//ActionErrors errors = new ActionErrors();
//		//ActionForward forward = new ActionForward(); // return value
//
//		//ArrayList listaTitulo = new ArrayList();
//		//boolean flag = false;
//		try {
//			SubTramaConsulta2 subTramaConsulta = new SubTramaConsulta2();
//			SubTramaRespuestaDatos2 subTramaRespuesta = new SubTramaRespuestaDatos2();
//			SubTramaRespuestaImagenes2 subTramaRespuestaImagenes2 = new SubTramaRespuestaImagenes2();
//
//			RENIEC_2_REPLY_Type objd = new RENIEC_2_REPLY_Type(cabecera,
//					subTramaRespuesta, subTramaRespuestaImagenes2);
//			objLog
//					.writeLog(
//							"["		+ input.getRegistro() + "] [" + input.getCodOficina() + "] = Tipo Consulta (DNI) =================================================", rootLog); //$NON-NLS-2$ //$NON-NLS-3$
//
//			subTramaConsulta.setNumDNI(input.getDni());
//			subTramaConsulta.setCaracVerificacion(" ");
//			subTramaConsulta.setTipoDocumento(" ");
//			subTramaConsulta.setFormatoFirma("1");
//			subTramaConsulta.setReservado("                             ");
//			usuarioForm.setCodError("Error No se encontraron Registros");
//			RENIEC_2_REQUEST_Type objSend = new RENIEC_2_REQUEST_Type();
//			
//			Control control = new Control();
//			control.setCodigoOficina(input.getCodOficina());
//			control.setNombreOficina(input.getNomOficina());
//			control.setRegistro(input.getRegistro());
//			control.setNombreCompleto(input.getNomGestor());
//			control.setFechaConsulta(input.getFechaString());
//			control.setTipoConsulta(input.getTipoConsulta());
//			control.setCanal(input.getCanal());
//			objSend.setControl(control);
//
//			objSend.setCabecera(cabecera);
//			objSend.setSubTramaConsulta(subTramaConsulta);
//			BBVA_RENIEC_INTERFACE_ServiceLocator objLocator = new BBVA_RENIEC_INTERFACE_ServiceLocator();
//
//			objd = objLocator.getSOAP_HTTP_Port().operation2(objSend);
//			subTramaRespuesta = objd.getSubTramaRespuestaDatos();
//			subTramaRespuestaImagenes2 = objd.getSubTramaRespuestaImagenes();
//
//			usuarioForm.setCodError(Messages.getString(subTramaRespuesta
//					.getCodError()));
//			System.out.println("ERROR:: " + subTramaRespuesta.getCodError());
//			sesion.setAttribute("foto", subTramaRespuestaImagenes2.getFoto());
//			sesion.setAttribute("firma", subTramaRespuestaImagenes2.getFirma());
//
//			sesion.setAttribute("fiCkeck", fiCkeck);
//			sesion.setAttribute("foCkeck", foCkeck);
//
//			if (subTramaRespuesta.getCodError().equals("0000")) {
//				flag = true;
//				objLog.writeLog("[Dni Consultado] : "
//						+ subTramaRespuesta.getNumDNI(), rootLog);
//				subTramaRespuesta.setSexo(ConstantesUtil.sexo(subTramaRespuesta
//						.getSexo()));
//				subTramaRespuesta.setFechaExpedicion(ConstantesUtil
//						.intToString(subTramaRespuesta.getFechaExpedicion()));
//				subTramaRespuesta.setFechaInscripcion(ConstantesUtil
//						.intToString(subTramaRespuesta.getFechaInscripcion()));
//				subTramaRespuesta.setFechaNac(ConstantesUtil
//						.intToString(subTramaRespuesta.getFechaNac()));
//				subTramaRespuesta.setEstatura(ConstantesUtil
//						.estatura(subTramaRespuesta.getEstatura()));
//				subTramaRespuesta.setEstadoCivil(ConstantesUtil
//						.estadoCivil(subTramaRespuesta.getEstadoCivil()));
//				subTramaRespuesta.setGradoInstruccion(ConstantesUtil
//						.gradoInst(subTramaRespuesta.getGradoInstruccion()));
//				System.out.println("subTramaRespuesta.getRestricciones():: "
//						+ subTramaRespuesta.getRestricciones());
//				//subTramaRespuesta.setRestricciones(ConstantesUtil.estado(subTramaRespuesta.getRestricciones(),true));
//				subTramaRespuesta.setRestricciones(getEstado(subTramaRespuesta
//						.getRestricciones(), true));
//
//				subTramaRespuesta.setConstVotacion(ConstantesUtil
//						.votacion(subTramaRespuesta.getConstVotacion()));
//				subTramaRespuesta.setAnioEstudio(ConstantesUtil
//						.anioEstudios(subTramaRespuesta.getAnioEstudio()));
//
//				System.out.println("CADUCIDAD:: "
//						+ subTramaRespuesta.getCaducidad());
//				//SesionLdapPeruProxy obj = new SesionLdapPeruProxy();
//				//IILDPeUsuario objUsu = new IILDPeUsuario();
//				for (int i = 0; i < 32; i++) {
//					listaTitulo.add(Messages.getString("opihue." + i));
//				}
//
//				/*
//				 System.out.println(">>>>>>>>>>>>>> ESTOY POR GRABAR EL LOG");
//				 Log beanLog = new Log();
//				 beanLog.setStr_num_oficina(grabaCodigo);
//				 beanLog.setStr_des_oficina(grabaNombre);
//				 beanLog.setStr_num_registro(registro);
//				 beanLog.setStr_nom_completo(nomCompleto);
//				 beanLog.setStr_fec_consulta( FuncionesUtil.printDateOperation("dd/MM/yyyy HH:mm:ss"));
//				 beanLog.setStr_tipo("NOMBRE");
//				 conexion.registraLog(beanLog);
//				 */
//				usuarioForm.setSubTramaRespuesta(subTramaRespuesta);
//				java.sql.Blob blob = null;
//				request.getSession()
//						.setAttribute("tramaRta", subTramaRespuesta);
//				String caducidad = subTramaRespuesta.getCaducidad();
//				System.out.println("CADUCIDAD LLLLL:: "
//						+ subTramaRespuesta.getCaducidad().length());
//				if (subTramaRespuesta.getCaducidad().equals("C")) {
//					Connection con = new Connection();
//					sesion.setAttribute("caducidad", con.findByID(
//							ConstantesUtil.CADUCIDAD).getValor1());
//					System.out.println("quiero ver que traes :"
//							+ con.findByID(ConstantesUtil.CADUCIDAD)
//									.getValor1());
//				} else {
//					sesion.setAttribute("caducidad", "");
//				}
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//			errors.add("name", new ActionError("id")); //$NON-NLS-2$
//		}
		
		return (forward);

	}

	public ActionForward inicio(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward();
		oficinaService=SpringUtils.getBean(request, OficinaService.class);
		corporativaService=SpringUtils.getBean(request, CorporativaService.class);
		try {

			request.getSession().setAttribute("codigoOficina",
					corporativaService.obtenerPorCodigo("T04", "001").getValor1());
			request.getSession().setAttribute("listaOficina",
					oficinaService.obtenerTodasOficinas());
		} catch (Exception e) {
			errors.add("name", new ActionError("id"));
		}
		if (!errors.isEmpty()) {
			saveErrors(request, errors);
			forward = mapping.findForward("error");
		} else {
			forward = mapping.findForward("inicio");

		}
		return (forward);

	}

	public ActionForward inicioDni(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward();
		oficinaService=SpringUtils.getBean(request, OficinaService.class);
		corporativaService=SpringUtils.getBean(request, CorporativaService.class);
		try {
			request.getSession().setAttribute("codigoOficina",
					corporativaService.obtenerPorCodigo("T04", "001").getValor1());
			request.getSession().setAttribute("listaOficina",
					oficinaService.obtenerTodasOficinas());
		} catch (Exception e) {

			errors.add("name", new ActionError("id"));
		}
		if (!errors.isEmpty()) {
			saveErrors(request, errors);
			forward = mapping.findForward("error");
		} else {
			forward = mapping.findForward("inicioDni");

		}
		return (forward);

	}

	public ActionForward mostrarDetalle(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward(); // return value
		UsuarioForm usuarioForm = (UsuarioForm) form;
		Vector listMenu = null;
		ArrayList collecUsuario = new ArrayList();
		ArrayList listaTitulo = new ArrayList();

		try {
			//SesionLdapPeruProxy obj = new SesionLdapPeruProxy();
			IILDPeUsuario objUsu = new IILDPeUsuario();
			for (int i = 0; i < 32; i++) {
				listaTitulo.add(Messages.getString("opihue." + i));
			}

			objUsu = com.grupobbva.bc.per.tele.ldap.directorio.IILDPeUsuario
					.recuperarUsuario("P007917");
			usuarioForm.setNumeroDniReceive(objUsu.getUID());
			usuarioForm.setApePaterno(objUsu.getApellido1());
			usuarioForm.setApeMaterno(objUsu.getApellido2());
			usuarioForm.setNombres(objUsu.getNombre());
			usuarioForm.setEstadoCivil(objUsu.getSexo());
			collecUsuario.add(usuarioForm);
			objUsu = com.grupobbva.bc.per.tele.ldap.directorio.IILDPeUsuario
					.recuperarUsuario("P007917");
			usuarioForm.setNumeroDniReceive(objUsu.getUID());
			usuarioForm.setApePaterno(objUsu.getApellido1());
			usuarioForm.setApeMaterno(objUsu.getApellido2());
			usuarioForm.setNombres(objUsu.getNombre());
			usuarioForm.setEstadoCivil(objUsu.getSexo());
			collecUsuario.add(usuarioForm);

			usuarioForm.setListaTitulo(listaTitulo);

		} catch (Exception e) {
			errors.add("name", new ActionError("id")); //$NON-NLS-2$
		}
		if (!errors.isEmpty()) {
			saveErrors(request, errors);
			forward = mapping.findForward("error");
		} else {
			forward = mapping.findForward("detalle");
		}
		// Finish with
		return (forward);

	}

	/**
	 * @return Returns the listaUsuarios.
	 */
	public List getListaUsuarios() {
		return listaUsuarios;
	}

	/**
	 * @param listaUsuarios
	 *            The listaUsuarios to set.
	 */
	public void setListaUsuarios(List listaUsuarios) {
		this.listaUsuarios = listaUsuarios;
	}

	public ActionForward generarPDF(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		HttpSession sesion = request.getSession();
		SubTramaRespuestaDatos2 tramaRta = (SubTramaRespuestaDatos2) sesion
				.getAttribute("tramaRta");
		response.setContentType("application/pdf"); // Code 1
		Document document = new Document(PageSize.A4, 50, 50, 50, 50);

		try {
			// step2
			PdfWriter.getInstance(document, response.getOutputStream()); // Code
			// 2
			document.open();
			//response.setContentType("application/pdf");

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		// step3

		PdfPTable pt = new PdfPTable(2);
		pt.getDefaultCell().setBorderWidth(0);
		int header[] = { 50, 20 };
		try {
			pt.setWidths(header);
		} catch (DocumentException e1) {
			e1.printStackTrace();
		}
		pt.setWidthPercentage(90);

		PdfPTable columnaTwo = new PdfPTable(1);
		columnaTwo.getDefaultCell().setBorderWidth(0);
		PdfPTable columnaOne = new PdfPTable(3);
		columnaOne.getDefaultCell().setBorderWidth(0);

		int headerwidths[] = { 30, 20, 5 };
		try {
			columnaOne.setWidths(headerwidths);
		} catch (DocumentException e2) {
			e2.printStackTrace();
		}
		columnaOne.setWidthPercentage(100);

		Font fontTitulo = FontFactory.getFont(FontFactory.HELVETICA, 14);
		Font fontCaducidad = FontFactory.getFont(FontFactory.HELVETICA_BOLD,
				10, new Color(0xFF, 0x00, 0x00));
		Font fontDatos = FontFactory.getFont(FontFactory.TIMES_ROMAN, 11);

		List<String> obj = new ArrayList<String>();
		obj.add("");
		obj.add("");
		obj.add(StringUtils.trimToEmpty(tramaRta.getNumDNI()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getApellidoPat()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getApellidoMat()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getNombres()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getFechaNac()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getCodUbigeoLocalNac()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getNombrePadre()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getNombreMadre()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getEstatura()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getSexo()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getEstadoCivil()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getGradoInstruccion()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getRestricciones()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getConstVotacion()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getFechaExpedicion()));
		obj.add("");
		obj.add(StringUtils.trimToEmpty(tramaRta.getNumLibro()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getFechaInscripcion()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getAnioEstudio()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getDocSust()));
		obj.add("");
		obj.add(StringUtils.trimToEmpty(tramaRta.getProvNac()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getDistNac()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getLocalNac()));
		obj.add("");
		obj.add(StringUtils.trimToEmpty(tramaRta.getDepartamentoDom()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getProvinciaDom()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getDistritoDom()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getLocalidadDom()));
		obj.add(StringUtils.trimToEmpty(tramaRta.getDireccion()));

		String caducidad = "";
		//FIXME Quitando Caducidad este dato aun  no se obtiene.
		/*if (tramaRta.getCaducidad().equals("C")) {
			Connection con = new Connection();
			caducidad = con.findByID(ConstantesUtil.CADUCIDAD).getValor1();
		}*/
		for (int i = 1; i < 34; i++) {
			if (i == 1 || i == 17 || i == 22 || i == 26) {
				columnaOne.getDefaultCell().setBackgroundColor(
						new Color(0xC0, 0xC0, 0xC0));
				columnaOne.getDefaultCell().setColspan(3);
				columnaOne.addCell(new Phrase(
						Messages.getString("opihue." + i), fontTitulo));
			} else if (i == 32) {
				columnaOne.getDefaultCell().setColspan(3);
				columnaOne.addCell(new Phrase(" ", fontTitulo));
			} else if (i == 33) {
				columnaOne.getDefaultCell().setBackgroundColor(
						new Color(0xff, 0xff, 0xff));
				columnaOne.getDefaultCell().setColspan(3);
				columnaOne.addCell(new Phrase(caducidad, fontCaducidad));
			} else {
				columnaOne.getDefaultCell().setBackgroundColor(
						new Color(0xff, 0xff, 0xff));
				columnaOne.getDefaultCell().setColspan(1);
				columnaOne.addCell(new Phrase(
						Messages.getString("opihue." + i), fontDatos));
				columnaOne.addCell(String.valueOf(obj.get(i)));
				columnaOne.addCell("");
			}
		}
		columnaOne.addCell("");
		/** ######################COLUMNA 2##############* */
		byte[] image = (byte[]) sesion.getAttribute("foto");
		byte[] firma = (byte[]) sesion.getAttribute("firma");
		PdfPCell objPdf = new PdfPCell();

		try {
			objPdf = new PdfPCell(Image.getInstance(image), true);
		} catch (BadElementException e3) {
			e3.printStackTrace();
		} catch (MalformedURLException e3) {
			e3.printStackTrace();
		} catch (IOException e3) {
			e3.printStackTrace();
		}
		objPdf.setBorderWidth(0);
		columnaTwo.addCell(new Phrase("", fontTitulo));
		columnaTwo.addCell(objPdf);

		objPdf = new PdfPCell(Image.getInstance(firma), true);
		objPdf.setBorderWidth(0);
		columnaTwo.addCell(objPdf);

		pt.addCell(columnaOne);
		pt.addCell(columnaTwo);

		try {
			document.add(pt);
		} catch (DocumentException e4) {
			e4.printStackTrace();
		}

		document.close();
		return null;
	}

	public ActionForward images(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward();

		HttpSession sesion = request.getSession();
		byte[] image = (byte[]) sesion.getAttribute("foto");
		try {
			response.setContentType("image/jpg");

			if (response != null) {
				if (response.getOutputStream() != null) {
					java.io.OutputStream sos = response.getOutputStream();
					sos.write(image);
					sos.flush();
					sos.close();
				}
			}
		} catch (Exception e) {
			errors.add("name", new ActionError("id"));
		}
		if (!errors.isEmpty()) {
			saveErrors(request, errors);
		}
		forward = mapping.findForward("ok");
		// Finish with

		return (forward);
	}

	public ActionForward imagesFirma(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward();

		HttpSession sesion = request.getSession();
		byte[] image = (byte[]) sesion.getAttribute("firma");
		try {

			response.setContentType("image/jpg");

			if (response != null) {
				if (response.getOutputStream() != null) {
					java.io.OutputStream sos = response.getOutputStream();
					sos.write(image);
					sos.flush();
					sos.close();
				}
			}
		} catch (Exception e) {
			errors.add("name", new ActionError("id"));
		}
		if (!errors.isEmpty()) {
			saveErrors(request, errors);
		}
		forward = mapping.findForward("ok");
		// Finish with

		return (forward);
	}

	public String getEstado(String estado, boolean flag,List lista) {
		System.out.println("Muestrame valor de estado filtro : " + estado);
		String est = "";
		try {

			if (lista != null && lista.size() > 0) {
				for (int i = 0; i < lista.size(); i++) {
					Corporativa corporativa = new Corporativa();
					corporativa = (Corporativa) lista.get(i);

					if (corporativa.getValor1() == null) {
						est = corporativa.getValor2();
					} else if (corporativa.getValor1().equals(estado)) {
						est = corporativa.getValor2();
					}

					System.out.println("tmaño de lista :" + lista.size());
					System.out.println("muestrame el valor de estado : "
							+ corporativa.getValor1());
					System.out.println("muestrame el valor de descripcion : "
							+ corporativa.getValor2());
				}

			} else {
				est = "";
			}

			if (!flag)
				if (est.length() > 11)
					est = est.substring(0, 12);

		} catch (Exception e) {
			est = "";
		}
		/**Truncar 12 tamaño*/

		return est;
	}
	
}
